From d9727290cfcbf68fe55bb29156a312b20ab9e615 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 25 Feb 2015 18:25:01 +0100 Subject: [PATCH] cssnode: Special-case TIMESTAMP invalidations Only invalidate timestamps if the node is marked as invalid. We overload the meaning of "invalid" as "tracks timestamps". While I don't like the way this is written, it is an important optimization because 95+% of nodes don't animate so timestamps don't matter to them. But timestamps are invalidated 60x per second. --- gtk/gtkcssnode.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index 585ead7ea3..11200d84ef 100644 --- a/gtk/gtkcssnode.c +++ b/gtk/gtkcssnode.c @@ -860,6 +860,12 @@ void gtk_css_node_invalidate (GtkCssNode *cssnode, GtkCssChange change) { + if (!cssnode->invalid) + change &= ~GTK_CSS_CHANGE_TIMESTAMP; + + if (change == 0) + return; + cssnode->pending_changes |= change; GTK_CSS_NODE_GET_CLASS (cssnode)->invalidate (cssnode); -- 2.30.2